package com.dcm.live.service;

import com.dcm.common.exception.MyException;
import com.dcm.live.entity.LiveRoomEntity;
import com.dcm.live.vo.LiveVo;
import com.dcm.live.vo.OnlineVo;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @author pengrongsheng
 */
public interface LiveRoomService {
    /**
     * 获得所有直播列表
     *
     * @return List<TbItem>
     */
    List<LiveRoomEntity> findAll();

    /**
     * 根据id查询直播间
     *
     * @param id 直播间id
     * @return TbItem
     */
    LiveRoomEntity findRoomById(Long id);

    /**
     * 添加直播间
     *
     * @param item 前台传递的 实体对象
     */
    void addRoom(LiveRoomEntity item);

    /**
     * 根据id删除
     *
     * @param id
     */
    void deleteRoomById(Long id);

    /**
     * 按照直播标题关键字查找搭配，倒序前四名
     *
     * @param keyWords 关键字
     * @return
     */
    List<LiveRoomEntity> findRoomByKeyWords(String keyWords);

    /**
     * 根据状态 查询
     *
     * @param status
     * @return
     */
    List<LiveRoomEntity> findRoomByStatus(Integer status);


    /**
     * 修改 item
     *
     * @param item 前台传递的 实体对象
     */
    void updateRoom(LiveRoomEntity item);

    /**
     * 显示直播人、在线人数、在线人头像只展示10个；
     *
     * @param uid
     * @return
     */
    List<OnlineVo> findOnline(Long uid);

    /**
     * 分页
     *
     * @param currentPage 当前页
     * @param pageSize    分页单位
     * @return 分页结果
     */
    PageInfo<LiveRoomEntity> findPage(Integer currentPage, Integer pageSize);


    /**
     * 查看当前观看人数、当前关注人数、当前点赞人数、当前下单人数
     *
     * @param id
     * @return
     * @throws MyException
     */
    List<LiveVo> findLive(Long id);

    /**
     * 修改状态
     *
     * @param id
     * @param status
     * @throws MyException
     */
    void liveStatus(Long id, Integer status);


    /**
     * 根据主播id查找
     * @param likedUserId
     * @return
     */
    LiveRoomEntity findRoomByUserId(Long likedUserId);

    /**
     * 已结束状态：删除
     * @param id
     * @param status
     */
    void liveDelete(Long id, Integer status);
}
